//////////////////////////////////////////////////
// STUDENT RESEARCH PROJECT						//
// UNIVERSITY OF HAGEN 2012						//
// File:	Utility.h							//
// Date:	01.09.2012							//
// Author:	Max Pejs							//
//////////////////////////////////////////////////

#include "Utility.h"

UInt8 Utility::nibbleToAscii(UInt8 v)
{
	UInt8 ret;
	if (v > 9)
	{
		ret = (v + 'A') - 10;
	}
	else
	{
		ret = v + '0';
	}
	return ret;
}

UInt8 Utility::asciiToNibble(UInt8 c)
{
	UInt8 v;
	if (c > '9')
	{
		v = (c  + 10) - 'A';
	}
	else
	{
		v = c - '0';
	}
	return v;
}

UInt8 Utility::calcStrLen(UInt8 * data)
{
	UInt8 cnt = 0;
	while(*(data++) != 0)
	{
		cnt++;
	}
	return cnt;
}

UInt8 Utility::calcCRC8( UInt8 * data)
{ 
  UInt8 i = 0;
  UInt8 XOR = 0;

  UInt8 iLen = calcStrLen(data);
  for (i = 0; i < iLen; i++)             /* loop for each data byte */
  {
    XOR^=data[i];
  }
  return XOR;
}